From 52ab9a36fa273a889c09ea0a7122ab20a94d8543 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 2 Aug 2014 11:17:18 +0200 Subject: [PATCH] Add a test for window focus handling This is a small test that checks that gtk_window_set/get_focus behave as expected, regardless of the window being shown or hidden. --- testsuite/gtk/Makefile.am | 1 + testsuite/gtk/focus.c | 56 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 testsuite/gtk/focus.c diff --git a/testsuite/gtk/Makefile.am b/testsuite/gtk/Makefile.am index e9f209fe20..fbeaa54384 100644 --- a/testsuite/gtk/Makefile.am +++ b/testsuite/gtk/Makefile.am @@ -42,6 +42,7 @@ TEST_PROGS += \ expander \ firefox-stylecontext \ floating \ + focus \ gestures \ grid \ gtkmenu \ diff --git a/testsuite/gtk/focus.c b/testsuite/gtk/focus.c new file mode 100644 index 0000000000..cce1f940a3 --- /dev/null +++ b/testsuite/gtk/focus.c @@ -0,0 +1,56 @@ +#include + +static void +test_window_focus (void) +{ + GtkWidget *window; + GtkWidget *box; + GtkWidget *entry1; + GtkWidget *entry2; + + window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); + gtk_container_add (GTK_CONTAINER (window), box); + gtk_container_add (GTK_CONTAINER (box), gtk_label_new ("label1")); + entry1 = gtk_entry_new (); + gtk_container_add (GTK_CONTAINER (box), entry1); + gtk_container_add (GTK_CONTAINER (box), gtk_label_new ("label2")); + entry2 = gtk_entry_new (); + gtk_container_add (GTK_CONTAINER (box), entry2); + + gtk_widget_show_all (box); + + g_assert_null (gtk_window_get_focus (GTK_WINDOW (window))); + + gtk_window_set_focus (GTK_WINDOW (window), entry1); + + g_assert (gtk_window_get_focus (GTK_WINDOW (window)) == entry1); + + gtk_widget_show_now (window); + + g_assert (gtk_window_get_focus (GTK_WINDOW (window)) == entry1); + + gtk_widget_grab_focus (entry2); + + g_assert (gtk_window_get_focus (GTK_WINDOW (window)) == entry2); + + gtk_widget_hide (window); + + g_assert (gtk_window_get_focus (GTK_WINDOW (window)) == entry2); + + gtk_window_set_focus (GTK_WINDOW (window), entry1); + + g_assert (gtk_window_get_focus (GTK_WINDOW (window)) == entry1); + + gtk_widget_destroy (window); +} + +int +main (int argc, char *argv[]) +{ + gtk_test_init (&argc, &argv); + + g_test_add_func ("/focus/window", test_window_focus); + + return g_test_run (); +} -- 2.30.2